#ifndef COMPOUNDCONTROLLER_H
#define COMPOUNDCONTROLLER_H

// Include files.
#include <vector>
#include "RobotController.hpp"

/**
 *  CompoundController activates/deactivates a specified list of RobotControllers when it activates/deactivates (respectivly).
 *  
 *  Testing shows this works for at least one controller.
 */
class CompoundController :
	public RobotController
{
	public:
		CompoundController();
		virtual ~CompoundController();
		
		void AddController(RobotController &controller);
	protected:
		virtual void ActivateImpl();
		virtual void DeactivateImpl();
		virtual void HandleAddedToRobot(SystematicRobot &robot);
	private:
		SystematicRobot *m_robot;
		std::vector<RobotController*> m_controllers;
};

#endif // #ifndef COMPOUNDCONTROLLER_H 
